home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / tutor.arc / HEX2DEC.SA < prev    next >
Text File  |  1990-01-05  |  2KB  |  52 lines

  1.          XDEF      HEX2DEC
  2.  SPC 1
  3. HEX2DEC  IDNT      1,0       HEX2DEC convert hex to decimal          11/02/81
  4.          SECTION   11
  5.  
  6. *    CONVERT BINARY TO DECIMAL  REG D0 PUT IN (A6) BUFFER AS ASCII
  7. *
  8. HEX2DEC  MOVEM.L   D1-D4/D6-D7,-(A7)   SAVE REGISTERS
  9.          MOVE.L D0,D7  SAVE IT HERE
  10.          BPL.S HX2DC
  11.          NEG.L D7  CHANGE TO POSITIVE
  12.          BMI.S     HX2DC57   SPECIAL CASE (-0)
  13.          MOVE.B #'-',(A6)+  PUT IN NEG SIGN
  14. HX2DC    CLR.W     D4        FOR ZERO SURPRESS
  15.          MOVE.L #10,D6  COUNTER
  16. HX2DC0   MOVE.L #1,D2  VALUE TO SUB
  17.          MOVE.L D6,D1  COUNTER
  18.          SUB.L #1,D1  ADJUST - FORM POWER OF TEN
  19.          BEQ.S HX2DC2  IF POWER IS ZERO
  20. HX2DC1   MOVE.W D2,D3  D3=LOWER WORD
  21.          MULU #10,D3
  22.          SWAP D2   D2=UPPER WORD
  23.          MULU #10,D2
  24.          SWAP D3   ADD UPPER TO UPPER
  25.          ADD.W D3,D2
  26.          SWAP D2  PUT UPPER IN UPPER
  27.          SWAP D3  PUT LOWER IN LOWER
  28.          MOVE.W D3,D2  D2=UPPER & LOWER
  29.          SUB.L #1,D1
  30.          BNE HX2DC1
  31. HX2DC2   CLR.L D0  HOLDS SUB AMT
  32. HX2DC22  CMP.L D2,D7
  33.          BLT.S HX2DC3  IF NO MORE SUB POSSIBLE
  34.          ADD.L #1,D0  BUMP SUBS
  35.          SUB.L D2,D7  COUNT DOWN BY POWERS OF TEN
  36.          BRA.S HX2DC22  DO MORE
  37. HX2DC3   TST.B D0  ANY VALUE?
  38.          BNE.S HX2DC4
  39.          TST.W     D4        ZERO SURPRESS
  40.          BEQ.S HX2DC5
  41. HX2DC4   ADD.B #$30,D0  BINARY TO ASCII
  42.          MOVE.B D0,(A6)+  PUT IN BUFFER
  43.          MOVE.B    D0,D4     MARK AS NON ZERO SURPRESS
  44. HX2DC5   SUB.L #1,D6     NEXT POWER
  45.          BNE HX2DC0
  46.          TST.W     D4        SEE IF ANYTHING PRINTED
  47.          BNE.S HX2DC6
  48. HX2DC57  MOVE.B #'0',(A6)+  PRINT AT LEST A ZERO
  49. HX2DC6   MOVEM.L   (A7)+,D1-D4/D6-D7   RESTORE REGISTERS
  50.          RTS  END OF ROUTINE
  51.  SPC 3
  52.          END